package com.atguigu.test2;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author 路飞
 * @date 2024/4/5 11:08
 * @description 13、写一段代码实现在遍历ArrayList时移除一个元素，例如：”java”？
 */
public class Exer13 {

    /**
     * @Description 注意：这里有一个坑，就是使用forEach遍历List的时候，不能修改List中的元素，比如不能往List中添加元素，也不能删除List中的元素
     * 否则会抛异常：java.util.ConcurrentModificationException
     *
     * 意思就是：如果我们修改了List中的元素，那么预期的元素和实际的元素不一致，就会抛出上面这个异常信息。
     */
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("java");
        list.add("mysql");
        list.add("spring");

//        for (String s : list) {
            // 增加和删除元素都是不行的
//            if ("java".equals(s)) {
//                list.remove(s);
//            }
//            if (s.equals("java")) {
//                list.add("aaa");
//            }
//        }

        // 方式一：使用流的方式可以去重指定的元素
//        list = list.stream().filter(element -> !element.equals("java")).collect(Collectors.toList());

        // 方式二：使用迭代器的方式也可以移除对应的元素
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (s.equals("java")) {
                iterator.remove();
            }
        }
        System.out.println(list);
    }
}
